package org.nfIt.th07;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collector;
import java.util.stream.Collectors;

/**
 * ClossName:Bookshelf
 * Pakage:org.nfIt.th07
 * Description
 *
 * @Author L
 * @Create 2024/5/19 20:33
 * @Version 2023.1.3
 *
 */
public class Bookshelf<T extends Book> {

    private List<T> books = new ArrayList<>();

    /**
     * 将一本书添加到书架上。
     * @param book
     */
    public void addBook(T book){
        books.add(book);
    }

    /**
     * 从书架上移除一本书
     * @param book
     */
    public void removeBook(T book){
        books.remove(book);
    }

    /**
     * 返回所有由指定作者撰写的书籍。
     * @param author
     */
    public List<T> getBooksByAuthor(String author){
        return books.stream()
                    .filter(book -> book.getName().equals(author))
                    .collect(Collectors.toList());
    }

    /**
     * 返回所有具有指定ISBN号的书籍。
     * @param isbn
     */
    public List<T> getBooksByISBN(String isbn){
        return books.stream()
                    .filter(book -> book.getISBNs().equals(isbn))
                    .collect(Collectors.toList());
    }
}
